"""
现代化UI样式配置
"""

# 主题配色
COLORS = {
    # 主色调
    'primary': '#6366F1',           # 靛蓝色 - 主要按钮
    'primary_dark': '#4F46E5',      # 深靛蓝 - 按钮按下
    'primary_light': '#818CF8',     # 浅靛蓝 - 悬停效果
    
    # 次要色调
    'secondary': '#10B981',         # 翠绿色 - 成功状态
    'secondary_dark': '#059669',    # 深绿
    'secondary_light': '#34D399',   # 浅绿
    
    # 成功色（简化引用）
    'success': '#10B981',           # 成功/开机
    'success_dark': '#059669',      # 深绿
    
    # 警告和危险
    'warning': '#F59E0B',           # 橙色 - 等待状态
    'danger': '#EF4444',            # 红色 - 危险/关机
    'danger_dark': '#DC2626',       # 深红
    
    # 信息色
    'info': '#3B82F6',              # 蓝色 - 信息提示
    'info_light': '#60A5FA',        # 浅蓝
    
    # 中性色
    'background': '#F9FAFB',        # 浅灰背景
    'surface': '#FFFFFF',           # 白色表面
    'border': '#E5E7EB',            # 边框灰
    'text_primary': '#111827',      # 主要文本
    'text_secondary': '#6B7280',    # 次要文本
    'text_disabled': '#9CA3AF',     # 禁用文本
    
    # 卡片和容器
    'card_bg': '#FFFFFF',           # 卡片背景
    'card_shadow': '#00000010',     # 卡片阴影
    
    # 温度显示
    'temp_cold': '#3B82F6',         # 低温蓝色
    'temp_normal': '#10B981',       # 正常绿色
    'temp_hot': '#EF4444',          # 高温红色
}

# 字体配置（优化字体大小，确保清晰可读）
FONTS = {
    'title': ('Segoe UI', 26, 'bold'),
    'heading': ('Segoe UI', 18, 'bold'),
    'subheading': ('Segoe UI', 15, 'bold'),
    'body': ('Segoe UI', 12),
    'body_bold': ('Segoe UI', 12, 'bold'),
    'small': ('Segoe UI', 11),
    'large_display': ('Segoe UI', 40, 'bold'),
    'medium_display': ('Segoe UI', 22, 'bold'),
}

# 间距配置
SPACING = {
    'xs': 4,
    'sm': 8,
    'md': 16,
    'lg': 24,
    'xl': 32,
    'xxl': 48,
}

# 按钮样式配置
BUTTON_STYLES = {
    'primary': {
        'bg': COLORS['primary'],
        'fg': '#FFFFFF',
        'active_bg': COLORS['primary_dark'],
        'hover_bg': COLORS['primary_light'],
    },
    'success': {
        'bg': COLORS['secondary'],
        'fg': '#FFFFFF',
        'active_bg': COLORS['secondary_dark'],
        'hover_bg': COLORS['secondary_light'],
    },
    'danger': {
        'bg': COLORS['danger'],
        'fg': '#FFFFFF',
        'active_bg': COLORS['danger_dark'],
        'hover_bg': '#F87171',
    },
    'info': {
        'bg': COLORS['info'],
        'fg': '#FFFFFF',
        'active_bg': '#2563EB',
        'hover_bg': COLORS['info_light'],
    },
}


def create_card_frame(parent, **kwargs):
    """创建卡片样式的Frame"""
    import tkinter as tk
    
    # 外层容器（用于模拟阴影）
    shadow_frame = tk.Frame(parent, bg=COLORS['border'])
    
    # 内层卡片
    card = tk.Frame(
        shadow_frame,
        bg=COLORS['card_bg'],
        **kwargs
    )
    card.pack(padx=1, pady=1, fill=tk.BOTH, expand=True)
    
    return shadow_frame, card


def create_modern_button(parent, text, command, style='primary', **kwargs):
    """创建现代化样式的按钮"""
    import tkinter as tk
    
    btn_style = BUTTON_STYLES.get(style, BUTTON_STYLES['primary'])
    
    button = tk.Button(
        parent,
        text=text,
        command=command,
        font=FONTS['body_bold'],
        bg=btn_style['bg'],
        fg=btn_style['fg'],
        activebackground=btn_style['active_bg'],
        activeforeground='#FFFFFF',
        relief=tk.FLAT,
        bd=0,
        padx=SPACING['lg'],
        pady=SPACING['md'],
        cursor='hand2',
        **kwargs
    )
    
    # 添加悬停效果
    def on_enter(e):
        button['bg'] = btn_style['hover_bg']
    
    def on_leave(e):
        button['bg'] = btn_style['bg']
    
    button.bind('<Enter>', on_enter)
    button.bind('<Leave>', on_leave)
    
    return button


def create_status_indicator(parent, text, status='off'):
    """创建状态指示器"""
    import tkinter as tk
    
    status_colors = {
        'on': COLORS['secondary'],
        'serving': COLORS['secondary'],
        'waiting': COLORS['warning'],
        'standby': COLORS['info'],
        'off': COLORS['text_disabled'],
    }
    
    frame = tk.Frame(parent, bg=COLORS['surface'])
    
    # 状态圆点
    dot_canvas = tk.Canvas(
        frame,
        width=12,
        height=12,
        bg=COLORS['surface'],
        highlightthickness=0
    )
    dot_canvas.pack(side=tk.LEFT, padx=(0, SPACING['sm']))
    
    color = status_colors.get(status, COLORS['text_disabled'])
    dot_canvas.create_oval(2, 2, 10, 10, fill=color, outline='')
    
    # 状态文本
    label = tk.Label(
        frame,
        text=text,
        font=FONTS['body'],
        fg=COLORS['text_primary'],
        bg=COLORS['surface']
    )
    label.pack(side=tk.LEFT)
    
    return frame, dot_canvas, label


def create_info_card(parent, title, value, icon='', color=None):
    """创建信息卡片"""
    import tkinter as tk
    
    if color is None:
        color = COLORS['primary']
    
    shadow_frame, card = create_card_frame(parent)
    card.config(padx=SPACING['lg'], pady=SPACING['lg'])
    
    # 标题
    title_label = tk.Label(
        card,
        text=title,
        font=FONTS['small'],
        fg=COLORS['text_secondary'],
        bg=COLORS['card_bg']
    )
    title_label.pack(anchor=tk.W)
    
    # 值
    value_label = tk.Label(
        card,
        text=value,
        font=FONTS['medium_display'],
        fg=color,
        bg=COLORS['card_bg']
    )
    value_label.pack(anchor=tk.W, pady=(SPACING['xs'], 0))
    
    return shadow_frame, card, value_label

